package modele.coupSpecial;

import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import modele.Plateau;
import modele.case_.Case;
import outils.Outils;
import outils.gestionnairefichier.GestionnaireImage;
import vue.Camera;

/**
 * Représente un coup spécial qui attaque une zone en forme de rond
 *
 * @author zianechm
 */
public class Bombe extends CoupSpecialAttaque {

	private int rayon;

	/**
	 * Crée un coup spécial Bombe
	 *
	 * @param rayon
	 */
	public Bombe(int rayon) {
		super();
		this.rayon = rayon;

	}

	@Override
	public ArrayList<Case> porteeCoupSpecial(Plateau p) {
		return Outils.cercle(cible, p, rayon);
	}

	@Override
	public void dessiner(Graphics2D gr, Camera camera) {
		if (lanceur.getCase() != cible) {
			BufferedImage bi = GestionnaireImage.getInstance().get("src/donnees/images/Bombe.png");
			AffineTransform at = new AffineTransform();
			at.translate(cible.getX() * Plateau.TAILLE_CASE, cible.getY() * Plateau.TAILLE_CASE);
			at.translate(Plateau.TAILLE_CASE / 2, Plateau.TAILLE_CASE / 2);
			double scale = (double) (((rayon - 1) * 2) * Plateau.TAILLE_CASE) / bi.getWidth();
			at.scale(scale, scale);
			at.translate(-bi.getWidth() / 2, -bi.getHeight() / 2);
			gr.drawImage(bi, at, null);
		}
	}
}
